Már egy ideje kavarok a JSON-nal, csak szövegként toltam ki, és ez senkit nem bántott (amit tudok), de szeretnék elkezdeni rendesen csinálni a dolgokat. Annyi állítólagos "szabványt" láttam a JSON tartalomtípushoz: alkalmazás / json application / x-javascript szöveg / javascript text / x-javascript szöveg / x-json De melyik a helyes vagy a legjobb? Megállapítottam, hogy vannak biztonsági és böngészőtámogatási problémák, amelyek eltérhetnek. Tudom, hogy van egy hasonló kérdés: Milyen MIME típus, ha a JSON-t egy REST API adja vissza ?, de egy kicsit célzottabb választ szeretnék kapni.
2020-12-07 21:16:02
1 2 Következő JSON szöveg esetén: alkalmazás / json A JSON szöveg MIME adathordozó-típusa az application / json. Az alapértelmezett kódolás az UTF-8. (Forrás: RFC 4627). Visszahívással rendelkező JSONP (futtatható JavaScript) esetén: alkalmazás / javascript Íme néhány blogbejegyzés, amelyeket a vonatkozó megjegyzések megemlítettek: Miért ne használhatna text / html fájlt a JSON-hoz? Az Internet Explorer programnak néha problémái vannak az alkalmazás / json alkalmazással A Mimetypes meglehetősen teljes listája és mire használhatók Az IANA hivatalos mime típuslistája @ gnrfan alábbi válaszából | Az IANA regisztrálta a JSON hivatalos MIME-típusát alkalmazás / json néven. Arra a kérdésre, hogy miért nem szöveg / json, úgy tűnik, Crockford azt mondta, hogy a JSON nem igazán JavaScript vagy szöveg, és az IANA is nagyobb valószínűséggel osztotta meg az / * alkalmazást, mint a szöveget / *. További források: Médiatípusok Kommentárkérés 4627 bluesmoon: A JSON-nak van egy típusa | JSON esetében: Tartalom-típus: application / json JSON-P esetében: Content-Type: alkalmazás / javascript | Természetesen a JSON megfelelő MIME adathordozó-típusa az application / json, de fel kell ismerni, hogy milyen típusú adatok várhatók az alkalmazásban. Például az Ext GWT-t használom, és a kiszolgáló válaszának szövegként / html-ként kell szerepelnie, de JSON-adatokat tartalmaz. Ügyféloldal, Ext GWT űrlapfigyelő uploadForm.getForm (). addListener (új FormListenerAdapter () { @ Felülírás public void onActionFailed (űrlap űrlap, int httpStatus, String responseText) { MessageBox.alert ("Hiba"); } @ Felülírás public void onActionComplete (űrlap űrlap, int httpStatus, String responseText) { MessageBox.alert ("Siker"); } }); Alkalmazás / json válasz típus használata esetén a böngésző javasolja, hogy mentse a fájlt. Szerveroldali forráskódrészlet a Spring MVC használatával return new AbstractUrlBasedView () { @SuppressWarnings ("nincs bejelölve") @ Felülírás védett void renderMergedOutputModel (Térképmodell, HttpServletRequest kérés, HttpServletResponse response) dobja a Kivételt { response.setContentType ("text / html"); response.getWriter (). write (json); } }; | JSON: A válasz dinamikusan generált adat, az URL-ben megadott lekérdezési paraméterek szerint. Példa: {"Név": "Foo", "Id": 1234, "Helyezés": 7} Tartalom-típus: application / json JSON-P: JSON párnázással. A válasz JSON adat, körülötte egy függvényhívás. Példa: functionCall ({"Név": "Foo", "Id": 1234, "Helyezés": 7}); Content-Type: alkalmazás / javascript | Ha Ubuntu vagy Debian rendszert használ, és .json fájlokat szolgáltat az Apache-on keresztül, akkor érdemes a megfelelő tartalmatípussal szolgálnia. Ezt elsősorban azért teszem, mert a JSONView Firefox kiterjesztést akarom használni A mod_mime Apache modul ezt könnyen megkönnyíti. Az Ubuntunál azonban szerkesztenie kell az /etc/mime.types fájlt, és hozzá kell adni a sort alkalmazás / json json Ezután indítsa újra az Apache-t: indítsa újra a sudo service apache2 programot | Ha az ASP.NET Web Services szolgáltatást az ügyfél oldaláról hívja, akkor az alkalmazás / json alkalmazást kell használnia a működéséhez. Úgy gondolom, hogy ez megegyezik a jQuery és az Ext keretrendszerekkel. | A JSON megfelelő tartalomtípusa az application / json, Hacsak nem használja a JSONP-t, más néven JSON with Padding, ami valójában JavaScript, és így a megfelelő tartalomtípus az alkalmazás / javascript lenne. | Kétségtelen, hogy az application / json a legjobb MIME típus a JSON válaszhoz. De volt némi tapasztalatom, amikor néhány tömörítési probléma miatt az application / x-javascriptet kellett használnom. A tárhely-környezetem megosztott tárhely a GoDaddy-val. Nem engedik, hogy megváltoztassam a szerver konfigurációit. Az alábbi kódot hozzáadtam a web.config fájlomhoz a válaszok tömörítésére.Ennek használatával az .aspx oldalak tömörítésre kerültek a g-zip segítségével, a JSON válaszok azonban nem. hozzáadtam a statikus és a dinamikus típusok szakaszában. De ez egyáltalán nem tömöríti a JSON válaszokat. Ezt követően eltávolítottam ezt az újonnan hozzáadott típust, és hozzáadtam mind a statikus, mind a dinamikus típusú szakaszokban, és megváltoztatta a válasz típusát .ashx (aszinkron kezelő) a application / x-javascript És most azt tapasztaltam, hogy a JSON válaszaimat g-zip segítségével tömörítették. Tehát személy szerint javaslom használni application / x-javascript csak akkor, ha JSON-válaszait megosztott tárhelyen szeretné tömöríteni. Mivel a megosztott tárhelyben nem teszik lehetővé az IIS módosításátkonfigurációk. | Csak az alkalmazás / json MIME típusaként történő használatakor rendelkezem a következőkkel (2011 novemberétől a Chrome legújabb verzióival, a Firefox és a Firebug): Nincs több figyelmeztetés a Chrome-tól, amikor a JSON-t a szerverről tölti be. A Firebug hozzáfűz egy lapot a válaszhoz, amely megmutatja a JSON-adatokat formázva. Ha a MIME típusa különbözik, akkor csak úgy jelenik meg „Válasz tartalom”. | Nem minden működik a tartalomtípusú alkalmazásoknál / json. Ha Ext JS űrlap elküldését használja a fájl feltöltéséhez, vegye figyelembe, hogy a böngésző a szerver válaszát elemzi az